Kali Linux
Kali Linux
〇、靶机
1 Metasploitable2-Linux
# 设置静态ip |
一、Kali基础
1 补充命令
root权限:
sudo
:一次执行sudo -i
:切换身份查找文件:
locate <name>
:查找所有文件(无db时用updatedb进行更新)whereis <name>
:查找二进制文件which <name>
:查找可执行文件find [option] [path] [filename]
:查找路径下文件网络设置(图形化界面在右上角网络配置——右键):
ifconfig
:网络配置ip addr
:网络信息ip route
:路由信息其他命令:
whois <url>
:收集信息wegt <url>
:文件下载命令技巧:
strings <file> | grep <flag>
:查询 file 中的关键字 flag
2 安装命令
# 更新apt-get |
3 远程登录
# vim:i:插入模式,esc:退出,::底线命令模式,wq:保存并退出。 |
4 MAC伪造
# 1.关闭网卡 |
5 OpenSSL
生成和验证证书。
6 工具管理
# 开始菜单添加 |
二、Misc
1 binwalk
识别、提取等文件操作
签名扫描选项参数 | 作用 |
---|---|
-B,-签名 | 扫描目标文件的通用文件签名 |
-R,-raw= | 扫描目标文件中指定的字节序列 |
-A,-opcode | s扫描目标文件中常见的可执行操作码签名 |
-m,-magic= | 指定要使用的自定义魔术文件 |
-b,-dumb | 禁用智能签名关键字 |
-I,-invalid | 显示标记为无效的结果 |
-x,-exclude= | 排除匹配< str >的结果 |
-y,-include= | 仅显示匹配< str >的结果 |
提取选项参数 | 作用 |
---|---|
-e,-extract | 自动提取已知的文件类型 |
-D,-dd= | 提取\ |
-M,-matryoshka | 递归扫描提取的文件 |
-d,-depth= | 限制matryoshka递归深度(默认值:8级深度) |
-C,-directory= | 将文件/文件夹提取到自定义(目录默认:当前工作目录) |
-j,-size= | 限制每个提取文件的大小 |
-n, count= | 限制解压缩文件的数量 |
-0,-run-as= | 使用指定用户的权限执行外部提取实用程序 |
-l,-preserve-symlinks | 不整理指向提取目录之外的提取的符号链接(危险) |
-r,-rm | 提取后删除雕刻的文件 |
-z | 从文件中提取数据,但不执行提取实用程序 |
-V | 子目录提取到由偏移量命名的子目录中 |
熵选项参数 | 作用 |
---|---|
-E | 熵计算文件熵 |
-F,-fast | 使用更快但不太详细的熵分析 |
-J | 将保存图保存为PNG |
-Q,-nlegend | 省略熵图中的图例 |
-N,-N | 请勿生成熵绘图 |
-H,-high= | 设置上升沿熵触发阈值(默认值:0.95) |
-L,-low= | 设置下降沿熵触发阈值(默认值:0.85) |
二进制差异选项参数 | 作用 |
---|---|
-W,-hexdump | 对一个或多个文件执行hexdump / diff |
-G,-green | 仅显示包含所有文件中相同字节的行 |
-i,-red | 只显示包含所有文件中不同字节的行 |
-U,-blue | 仅显示包含不同字节的行,这些字节在某些文件中是不同的 |
-u,-similar | 仅显示所有文件之间相同的行 |
-w,-terse | 区分所有文件,但只显示第一个文件的十六进制转储 |
原始压缩选项参数 | 作用 |
---|---|
-X,-deflate | 扫描原始deflate压缩流 |
-Z,-lzma | 扫描原始lzma压缩流 |
-P,-partial | 执行一次表面但更快的扫描 |
-S,-stop | 在第一个结果后停止 |
常规选项参数 | 作用 |
---|---|
-l,-length= | 要扫描的字节数 |
-o,-offset= | 在此文件偏移量处开始扫描 |
-O,-base= | 向所有打印的偏移量添加基址 |
-K,-block= | 设置文件块大小 |
-g,-swap= | 扫描前每n个字节反转一次 |
-f,- log= | 将结果记录到文件中 |
-c,-csv | 将结果记录到csv格式的文件中 |
-t,-term | 格式输出以适应终端窗口 |
-q,-quiet | 抑制输出到stdout |
-v,-verbose | 启用详细输出 |
-h,-help | 显示帮助输出 |
-a,-finclude= | 仅扫描名称与此regex匹配的文件 |
-p,-fexclude= | 不扫描名称与此正则表达式匹配的文件 |
-s,-status= | 在指定端口上启用状态服务器 |
# 案例 |
2 foremost
用于分离文件
选项 | 作用 |
---|---|
-h | 帮助 |
-V | 显示版权信息并退出 |
-t | 指定文件类型(-t jpeg,pdf…) |
-d | 打开间接块检测(对于UNIX文件系统) |
-i | 指定输入文件(默认为stdin) |
-a | 写入所有标头,不执行错误检测(损坏的文件) |
-w | 仅写入审核文件,不将任何检测到的文件写入磁盘 |
-o | 设置输出目录(默认为输出) |
-c | 设置要使用的配置文件(默认为foremost.conf) |
-q | 启用快速模式。在512字节边界上执行搜索 |
-Q | 启用安静模式。禁止输出消息 |
-v | 详细模式。将所有消息记录到屏幕上 |
# 案例 |
三、 信息收集
1 定义
被动扫描:在对方未知的情况下完成扫描。
主动扫描:主动发包,看响应。
2 maltego
一键版信息收集(通过域名)
下载后会自动加入在【01-信息收集 】中
注册登入:CE版(注册要科学上网) :
- normal:信息多
- S:保密性强
使用:
- “+” 号(上)—— Domain(左)——L1 - L3(1:更快,3:更全)
3 sn0int
工具集,可以自己开发模块(本身没有模块,需要自己添加)
# 安装(kali): |
4 NMAP
1.1 主机发现
# 1.全面扫描/综合扫描 |
1.2 端口扫描
端口状态 | 作用 |
---|---|
open | 开放 |
closed | 关闭 |
filtered | 阻塞的,未到达。不确定开放(可能是自己主机开了防火墙) |
unfiltered | 可访问但未知开放 |
open | filtered | nmap无法确认端口状态 |
closed | filtered | nmap无法确认端口状态 |
# 1.时序扫描(0:偏执的,慢,常用于逃避IDS;1:鬼祟的,同0;2:文雅的,不常用;3:默认的;4:野蛮的,常用的;5:疯狂的,会降低精度) |
1.3 指纹识别与探测
# 1.版本探测 |
1.4 伺机而动
# 1.调整并行扫描组的大小 |
1.5 防火墙/IDS 逃逸
# 1.报文分段 |
1.6 信息搜集
# 1.IP 信息收集 |
1.7 结果输出
# 1、输出xml |
5 masscan
端口扫描
# 扫描指定网段下的指定端口 |
四、Web扫描
1 域名扫描
dirb:
原理:靠字典扫描
dirb url
:扫描urldirsearch:
2 Web信息扫描
whatweb:
收集web相关信息
whatweb url
:输出信息
-v
:格式化输出
五、漏洞扫描
1 NMAP(主机漏洞)
脚本使用:
指定脚本:
sudo nmap --script ftp-vsftpd-backdoor 192.168.17.137
全面扫描:
sudo nmap --script vuln 192.168.17.137
更全面扫描:
cd .../scripts —— sudo git clone https://github.com/scipag/vulscan.git
(安装库到 scripts 中)
sudo nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV 192.168.17.137 [ |more ]
(更多显示,| 和 more 中间无空格)
2 zaproxy(Web漏洞)
sudo apt install zaproxy
手动扫描:firefox(上右)——找到网址——攻击(站点)——主动扫描——警报(查看结果)
3 rips-0.55(PHP代码审计)
该工具主要用于学习,实战需要更好的审计工具。
sudo mv -v rips-0.55 /var/www/html |
六、暴力破解
1 hydra
暴力破解工具。
# ssh爆破(指定用户名和密码字典) |
七、远程控制
1 木马分类
正向木马:被控端感染木马后,主控端需要主动扫描才可以得知并连接。(不易暴露,但不知道木马什么时候被感染)
反向木马:在木马中留下 IP 地址,当被控端感染木马后会主动连接主控端。
2 netcat(瑞士军刀)
nc -v ip port:探测端口是否开放(出现结果后可以直接中断) |
3 MSFPC(生成远控软件)
MSFPC:msf payload creator
# 选择在哪个ip上生成指定platform的木马(ip 一般指定 eth0)(protocol:选择传输的协议,默认 tcp,改成 https 更安全) |
4 msfvenom(生成远控软件,更全面)
-p / --payload <payload> # 指定攻击载荷(msfvenom -l payloads:查询) |
5 杀毒软件(upx加壳)
杀毒软件原理:
- 基于文件扫描的反病毒技术:检测二进制代码(检测硬盘),如果是病毒将加入特征库便于下次检测。
- 基于内存的反病毒技术:运行时发现,执行后的结构会与病毒特征匹配,匹配成功将不会被执行。
基于行为的反病毒技术:如果软件运行时执行的操作可疑(改注册表、控制进程等)将会被当成病毒查杀。
反杀毒方式:
改特征码。
- 添加花指令:添加无意义的指令改变特征码的位置。
- 程序加密:加壳,变成 PE 文件中的一串数据。(整个过程在加密过程中进行)
# 为软件加壳 |
6 powerspolit
原理:被控端被控之后访问主控端的网站,利用被控端的 powershell 对被控端执行操作。
该程序主要用于搭建一个网站让被控端访问后控制被控端的 powershell,逃过杀毒软件的基于行为检测。
# 搭建网站 |
7 weevely(PHP恶意代码生成)
# 本地生成木马(带有密码,让他人无法访问) |
八、sqlmap
1 参数
# 参数 |
2 简单使用
# 步骤 |
3 高级使用
--tamper=xxx # 指定一些特殊脚本,在文件夹tamper下 |
# 进行base64编码传输 |
4 报错
Q1:报错:
python: can't open file 'sqlmap': [Errno 2] No such file or directory
A1:是路径问题,解决如下:
cd /usr/bin
python sqlmap -u http://www.xxx.com
九、metasploit
1 msf 基础
路径:
/usr/share/metasploit-framework
Metasploit 程序需要使用Postgresql数据库:
official::Postgresql :用于严格的企业场景。
MySQL:用于业务简单的互联网场景。
基础库:
metasploit基础库:文件位于源码根目录路径下的 libraries 目录中,包括 Rex,framework-core 和 framework-base 三部分。
Rex :是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgresQL以及 MySQL数据库支持等。
framework-core库:负责实现所有与各种类型的上层模块及插件的交互接口。
framework-base库:扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。
模块:
- Aux(分为辅助模块):漏洞探测与扫描。
- Exploits(渗透攻击模块):渗透攻击。
- Post(后渗透攻击模块):shell 之后的进一步攻击。
- payloads(攻击载荷模块):用于攻击,程序注入,设置 shell。
- Encoders(编码器模块):编码。
- Nops(空指令模块):空指令。
插件作用:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。
接口:
- msfconsole:控制终端。
- msfcli:命令行。
- msfgui:图形化界面。
- armitage:图形化界面。
- msfapi:远程调用接口。
功能程序:
metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用metasploit框架内部能力完成一些特定任务。
比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。
Rank可靠性级别 | 效果 |
---|---|
excellent | 漏洞利用程序绝对不会使目标服务崩溃,就像SQL注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别 |
great | 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址 |
good | 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的”常见情况“(桌面应用程序的Windows 7,服务器的2012等) |
normal | 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测 |
average | 该漏洞利用程序不可靠或者难以利用 |
low | 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于50%的利用成功率) |
manual | 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级 |
2 模块使用流程
操作系统攻击:
- ms17_010:win7,SMB协议
应用程序攻击:
- easyfilesharing——seh:http
客户机攻击:
原理:被动攻击,需要用户进行配合。(例:点击恶意链接,下载恶意插件(Flash插件经常爆出恶意漏洞))
adobe_flash——adobe_flash_hacking_team_uaf( version <= 18 ):flash(自建一个恶意网页,用户访问则会被攻击)
# 帮助 |
3 其他命令
# 连接命令,一般用于内网渗透([*]表示连接成功,可以使用命令如get来收集信息) |
4 查找命令
# 直接查找,或精确查找 |
5 注意事项
msf 中的点是无法复制的(不可见的),要复制应到控制台中复制。
6 简单案例
使用流程:
- 查找CVE公布的漏洞
- 查找对应的exploit模块
- 添加模块参数
- 添加payload后门
- 执行exploit攻击
- 执行后续操作
永恒之蓝 |
十、内网穿透
原理:让外网可以访问内网。
1 负载均衡lbd探测
# 探测 |